import java.util.Scanner;

public class javase03 {
        public static void main1(String[] args) {
            //   1. 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)
            int age = 0;
            while (true) {
                Scanner sc = new Scanner(System .in);
                age = sc.nextInt();
                if(age < 18) {
                    System.out.println("少年");
                }else if (age >= 19 && age < 28) {
                    System.out.println("青年");
                }else if (age >= 29 && age < 55) {
                    System.out.println("中年");
                }else  {
                    System.out.println("老年");
                }
            }
        }
        public  static Boolean func(int k) {
            if(k < 3) {
                return k > 1;
            }
            for (int i = 2; i <= k/2 ; i++) {
                if(k % i == 0) {
                    return false;
                }
            }
            return true;
        }
        // 2. 判定一个数字是否是素数
        public static void main3(String[] args) {
            while (true) {
                Scanner sc  =new Scanner(System.in);
                int k = sc.nextInt();
                Boolean a = func(k);
                System.out.println(a);
            }
        }


        //         3. 打印 1 - 100 之间所有的素数
        public static void main4(String[] args) {
            for (int i = 1; i < 101; i++) {
                if(func(i) == true) {
                    System.out.println(i);
                }
            }
        }
        //        4. 输出 1000 - 2000 之间所有的闰年
        public static boolean isleapyear (int i) {
            if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
                return true;
            }
            return false;
        }
        public static void main5(String[] args) {
            for (int i = 1000; i < 2001; i++) {
                if(isleapyear(i) == true) {
                    System.out.println(i);
                }
            }
        }
//        5. 输出乘法口诀表


        public static void main6(String[] args) {
            for (int i = 1; i < 10; i++) {//每行恒定值
                for (int j = 1; j <= i; j++) {//与恒定值相乘的值
                    System.out.print( j + "*" + i + "= "+ i*j);
                    System.out.print(" ");
                }
                System.out.println("");

            }
        }
        //        6. 求两个正整数的最大公约数
        public static int findMax (int a, int b) {
            int k = a  % b;
            while (k != 0) {
                a = b;
                b = k;
                k = a  % b;
            }
            return b;
        }
        public static void main7(String[] args) {
            while (true) {
                Scanner sc = new Scanner(System.in);
                int a = sc.nextInt();
                int b = sc.nextInt();
                System.out.println(findMax(a,b));
            }
        }
//        7. 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。

        public static void main8(String[] args) {
            double ret = 0;
            int k = 1;
            for (double i = 1; i < 101; i++) {
                ret += (1/i)*k;
                k*=-1;
            }
            System.out.println(ret);

        }
        //        8. 编写程序数一下 1到 100 的所有整数中出现多少个数字9。
        public static void main9(String[] args) {
            int count =  0;
            for (int i = 1; i < 101; i++) {
                if(i % 10 == 9) {
                    count++;
                }
                if(i / 10 == 9) {
                    count++;
                }
            }
            System.out.println(count);
        }
//        9. 求出0～999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数，其各位数字的立方和确好等于该数本
//        身，如；153＝1＋5＋3?，则153是一个“水仙花数”。)

        public static int cube (int i) {
            int ret = 1;
            for (int j = 0; j < 3; j++) {
                ret *= i;
            }
            return ret;
        }
        public static int sumcube (int num) {
            int sum = 0;
            while(num > 0) {
                sum += cube(num % 10);
                num /= 10;
            }
            return sum;
        }
        public static void main10(String[] args) {
            for (int i = 0; i < 1000; i++) {
                if(i>99 && sumcube(i) == i) {
                    System.out.println(i);
                }
            }
        }

        // 编写代码模拟三次密码输入的场景。 最多能输入三次密码，密码正确，提示“登录成功”,密码错误， 可以重新输
// 入，最多输入三次。三次均错，则提示退出程序
        public static void main11(String[] args) {
            String arr = "123456 ";
            int retry = 3;
            for (int i = 0; i < 3; i++) {
                Scanner sc = new Scanner(System.in);
                String input = sc.nextLine();
                if(input.equals(arr)) {
                    System.out.println("登录成功");
                    break;
                }else {
                    retry--;
                    System.out.println("输入错误，还有" + retry + "次机会");
                }
            }
            if(retry == 0) {
                System.out.println("次数已经用完，退出程序");
            }
        }

// 11. 写一个函数返回参数二进制中 1 的个数 比如： 15 0000 1111 4 个 1


        public static int func2(int num) {
            int count = 0;
            while(num > 0) {
                if(num % 2 == 1) {
                    count++;
                }
                num /= 2;
            }
            return count;
        }


        public static void main12(String[] args) {
            Scanner sc = new Scanner(System.in);
            int i = sc.nextInt();
            System.out.println(func2(i));
        }

// 12. 获取一个数二进制序列中所有的偶数位和奇数位， 分别输出二进制序列。

        public static void odd(int num) {
            //第0 位移30 位就到了第31位 由此可见此为取奇次位的方法
            for (int i = 30; i >= 0 ; i-=2) {
                if( (num & (1 << i )) == (1<< i) ) {
                    System.out.print("1");
                }else {
                    System.out.print("0");
                }
            }
        }
        public static void even(int num) {
            //第0 位移31 位就到了第32位 由此可见此为取偶次位的方法
            for (int i = 31; i >= 1 ; i-= 2) {
                if((num & (1<< i)) == (1<< i)) {
                    System.out.print("1");
                }else {
                    System.out.print("0");
                }
            }
        }

        public static void main(String[] args) {

            //内存中一个数字四个字节，总共32个比特位最后 0-31
            Scanner sc = new Scanner(System.in);
            int num = sc.nextInt();
            odd(num);//奇数位
            System.out.println("");
            even(num);//偶数位
        }

        public static void func3(int a) {
            if(a > 9) {
                func3(a/10);
            }
            System.out.print(a%10 + " ");
        }

        // 13. 输出一个整数的每一位.
        public static void main14(String[] args) {
            while(true) {
                Scanner sc = new Scanner(System.in);
                int a = sc.nextInt();
                func3(a);
            }
        }

        // 14. 完成猜数字游戏
        public static void main15(String[] args) {
            int number = (int)(Math.random() * 10 + 1);
            int guess;
            do {
                Scanner sc = new Scanner(System.in);
                guess = sc.nextInt();
                if(guess > number) {
                    System.out.println("猜大了");
                }else if(guess < number)  {
                    System.out.println("猜小了");
                }
            }while(guess != number);
            System.out.println("恭喜你，猜对了");

        }


    }
